首页 > 试题广场 >

最大数字交换

[编程题]最大数字交换
  • 热度指数:1135 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个字符串num,字符串由0~9的正整数组成,你至多可以交换一次字符串中的任意两位字符,使得交换后的num代表的正整数尽可能大。
1.给定的num不会含有前导0,是一个合法的正整数类型的字符串
2.可以不交换,但是最多只能交换一次
数据范围:
示例1

输入

"4556"

输出

"6554"

说明

交换6和4,可以获得最大的正整数6554 
示例2

输入

"5"

输出

"5"
示例3

输入

"8873"

输出

"8873"

说明

不需要交换 
# @param num string字符串 
# @return string字符串
#
class Solution:
    def maximumSwap(self , num: str) -> str:
        # write code here
        max_value = num[-1]
        max_place = len(num)-1
        for i in range(len(num)-2,-1,-1):
            if(num[i] > max_value):
                max_value = num[i] 
                max_place = i
        num = list(num)
        for j in range(0,max_place):
            if(num[j] < max_value):
                num[j],num[max_place] = max_value,num[j]
                break
        return "".join(num)

发表于 2022-02-20 14:07:02 回复(2)

问题信息

难度:
1条回答 1630浏览

热门推荐

通过挑战的用户

查看代码